package com.finger.gulimall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.finger.common.utils.PageUtils;
import com.finger.gulimall.product.entity.AttrEntity;
import com.finger.gulimall.product.vo.AttrRespVO;
import com.finger.gulimall.product.vo.AttrVO;

import java.util.List;
import java.util.Map;

/**
 * 商品属性
 *
 * @author finger
 * @email 909128695@qq.com
 * @date 2022-03-16 12:43:42
 */
public interface AttrService extends IService<AttrEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 保存属性对象，并在属性分组表中保存关系
     *
     * @param attr
     */
    void saveAttr(AttrVO attr);

    /**
     * 级联更新对应属性值
     *
     * @param attr
     */
    void updateDetails(AttrVO attr);

    /**
     * 分页查询属性数据
     *
     * @param params
     * @param catId  菜单Id
     * @return
     */
    PageUtils queryPage(Map<String, Object> params, Integer catId, String type);

    /**
     * 返回修改时的回显信息
     *
     * @param attrId 分类Id
     * @return
     */
    AttrRespVO getDetails(Long attrId);

    /**
     * 当删除属性时，级联删除属性和属性分组中间表中的数据
     *
     * @param asList
     */
    void removeCascadeDetails(List<Long> asList);

    /**
     * 根据该商品的全部属性获取到可检索的商品属性id
     *
     * @param productAttrIds
     * @return
     */
    List<Long> getSearchAttrIds(List<Long> productAttrIds);

    /**
     * 根据属性id返回属性名
     *
     * @param attrId
     * @return
     */
    String getAttrNameByAttrId(Long attrId);

}

